Предыдущий раздел ОСНОВНЫЕ ОПЕРАТОРЫ АССЕМБЛЕРА Следующий раздел

1.6. Псевдооператоры для задания структуры программы

Эти псевдооператоры позволяют программисту влиять на структуру машинной программы и на размещение программы в памяти.

1) %includeпсевдооператор, выполняющий включение в исходную программу требуемого текстового файла. Включаемый файл может содержать любые программные операторы, в том числе, макроопределения и описания структур. Операндом оператора %include является имя включаемого файла, заключенное в кавычки. Пример:

%include         ‘Video_io.asm’              ; Включение файла Video_io.asm

Встретив оператор %include, транслятор заменяет его на текст «дочернего» исходного файла, указанного в этом операторе.

2) absolute – псевдооператор, задающий виртуальный сегмент данных, а также расположение этого сегмента данных относительно начала сегмента памяти программы. Термин виртуальный сегмент означает, что данный сегмент создается в исходной программе явно, с использованием специально предназначенных для этого псевдооператоров absolute или segment. В отличие от него логический сегмент существует не в исходной, а в машинной программе. Пример:

A1                   absolute      80h   ; Следующий байт имеет адрес-смещение 80h

Виртуальный сегмент, начинающийся с оператора absolute, закончится тогда, когда в программе начнется следущий виртуальный сегмент. Его начало задается или другим оператором absolute, или оператором segment. Имя сегмента (в примере – A1) не является обязательным.

3) segment – псевдооператор задания виртуального сегмента кода, данных или стека. Тип сегмента code, data или stack задается в качестве параметра оператора segment. Если виртуальному сегменту требуется присвоить какое-то другое имя, то это имя записывается в качестве дополнительного параметра оператора segment. Причем этот параметр записывается первым. Например, следующий оператор присваивает сегменту кода имя “Program”:

segment Program  code

Пример оператора, который присваивает виртуальному сегменту данных имя “data3”:

segment data3 data   

Виртуальный сегмент, начинающийся с оператора segment, закончится тогда, когда в программе встретится или другой оператор segment, или оператор absolute, или закончится текст  программы.

Все одноименные виртуальные сегменты, независимо от того, в каких исходных файлах и фрагментах они находятся, представлены в готовой машинной программе в виде единого логического сегмента.

4) псевдооператор org  сообщает транслятору о том, что следующий оператор программы должен быть помещен в выделенный программе сегмент ОП с заданным смещением (параметр оператора org) относительно начала сегмента.

5) global, extern – псевдооператоры, используемые для подготовки связывания раздельно транслировавшихся объектных модулей в единый загрузочный модуль. При этом оператор global используется для описания внешних выходных меток, а оператор extern – внешних входных меток. Внешние выходные метки определены в данном фрагменте исходной программы, а используются в других фрагментах исходной программы. Фрагмент исходной программы – один или несколько исходных файлов программы, соединенных с помощью операторов %include. Внешние входные метки, наоборот, используются в данном фрагменте исходной программы, а определены в других фрагментах. Примеры:

global    Label    

extern    Array

Следует отметить, что в отличие от псевдооператоров short,near, far данные операторы никак не зависят от «расстояния» между операторами программы, а представляют собой лишь указания для транслятора о подготовке вспомогательной информации для редактора связей.

 


Предыдущий раздел В начало Следующий раздел